package com.catazy.album.data.datasource.database

import androidx.room.Dao
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
import com.catazy.album.data.datasource.database.model.AlbumEntityModel

/**
 * 作者: Tao
 * 日期: 2024/12/23
 * 时间: 10:08
 * 描述: 专辑(Album)信息数据库操作类
 */
@Dao
internal interface AlbumDao {

    /**
     * 获取数据库中的所有专辑信息
     *
     * @return 包含所有专辑的列表
     */
    @Query("SELECT * FROM albums")
    suspend fun getAll(): List<AlbumEntityModel>

    /**
     * 根据艺术家名称、专辑名称和音乐脑数据库(MusicBrain)标识符获取特定的专辑信息
     *
     * @param artistName 艺术家名称
     * @param albumName 专辑名称
     * @param mbId 音乐脑数据库标识符
     * @return 匹配查询条件的专辑实体
     */
    @Query("SELECT * FROM albums WHERE artist = :artistName AND name = :albumName AND mbId = :mbId")
    suspend fun getAlbum(artistName: String, albumName: String, mbId: String?): AlbumEntityModel

    /**
     * 向数据库中插入多个专辑实体模型，如果存在冲突，则替换原有数据
     *
     * @param albums 要插入的专辑实体模型列表
     */
    @Insert(onConflict = OnConflictStrategy.REPLACE)
    suspend fun insertAlbums(albums: List<AlbumEntityModel>)
}